#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Termstructures;
using Cephei.QL;
namespace Cephei.QL.Experimental.Callablebonds
{
     // <summary> 
	// ! Callable fixed rate bond Black engine. The embedded (European) option follows the Black "European bond option" treatment in Hull, Fourth Edition, Chapter 20.  \todo set additionalResults (e.g. vega, fairStrike, etc.)  \warning This class has yet to be tested  \ingroup callablebondengines
	// </summary>
    [Guid ("A98C2C33-4A95-4ef4-9D2A-BECDA516D2E8"),ComVisible(true)]
	public interface IBlackCallableFixedRateBondEngine 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 IBlackCallableFixedRateBondEngine Calculate {get;}
    }

    // <summary> 
	// ! Callable fixed rate bond Black engine. The embedded (European) option follows the Black "European bond option" treatment in Hull, Fourth Edition, Chapter 20.  \todo set additionalResults (e.g. vega, fairStrike, etc.)  \warning This class has yet to be tested  \ingroup callablebondengines Factory
	// </summary>
   	[ComVisible(true)]
    public interface IBlackCallableFixedRateBondEngine_Factory // : Collection_Factory<IBlackCallableFixedRateBondEngine, ICell<IBlackCallableFixedRateBondEngine>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        // <summary> 
		// ! no vol structures implemented yet besides constant volatility
		// </summary>
	    IBlackCallableFixedRateBondEngine Create (Cephei.QL.Experimental.Callablebonds.ICallableBondVolatilityStructure yieldVolStructure, Cephei.QL.Termstructures.IYieldTermStructure discountCurve);
        
	    IBlackCallableFixedRateBondEngine Create (Cephei.QL.IQuote fwdYieldVol, Cephei.QL.Termstructures.IYieldTermStructure discountCurve);
    }
}

